home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / tools / czesc_3 / multiuser / src / library / task.h < prev    next >
C/C++ Source or Header  |  1994-03-07  |  3KB  |  77 lines

  1. /************************************************************
  2. * MultiUser - MultiUser Task/File Support System                *
  3. * ---------------------------------------------------------    *
  4. * Task Management Routines                                                *
  5. * ---------------------------------------------------------    *
  6. * © Copyright 1993-1994 Geert Uytterhoeven                        *
  7. * All Rights Reserved.                                                    *
  8. ************************************************************/
  9.  
  10.  
  11. #include "multiuser.h"
  12.  
  13.  
  14.     /*
  15.      *        Private Task Level Node
  16.      */
  17.  
  18. struct muTaskLevel {
  19.     struct MinNode Node;
  20.     struct MinList Tasks;            /* List of Tasks in this Level */
  21.     struct MinList Children;        /* List of Child Levels */
  22.     struct muTaskLevel *Parent;
  23.     struct muExtOwner Owner;        /* This MUST be the last member!! */
  24. };
  25.  
  26.  
  27.     /*
  28.      *        Private Task Node
  29.      */
  30.  
  31. struct muTaskNode {
  32.     struct MinNode LevelNode;        /* In Level */
  33.     struct MinNode ListNode;        /* In Task List */
  34.     struct Task *Task;
  35.     ULONG DefProtection;                /* Default Protection Bits */
  36.     struct muTaskLevel *Level;
  37. };
  38.  
  39.  
  40.     /*
  41.      *        Extended Owner Information Structure for root
  42.      */
  43.  
  44. extern struct muExtOwner RootExtOwner;
  45.  
  46.  
  47.     /*
  48.      *        Function Prototypes
  49.      */
  50.  
  51.  
  52. extern void InitTaskList(void);
  53. extern struct muTaskNode *CreateOrphanTask(struct Task *task, ULONG defprotection);
  54. extern void RemAllTaskNodes(void);
  55. extern BOOL PushTask(struct Task *task, struct muExtOwner *owner);
  56. extern BOOL PushTaskLevel(struct Task *task, struct muExtOwner *owner);
  57. extern BOOL PopTask(struct Task *task);
  58. extern BOOL PopTaskLevel(struct Task *task);
  59. extern BOOL PopTaskDetach(struct Task *task);
  60. extern BOOL PopTaskLevelDetach(struct Task *task);
  61. extern ULONG GetTaskOwner(struct Task *task);
  62. extern struct muExtOwner *GetTaskExtOwner(struct Task *task);
  63. extern ULONG GetTaskDefProtect(struct Task *task);
  64. extern BOOL SetTaskDefProtect(struct Task *task, ULONG defprotection);
  65. extern BOOL SetLevelDefProtect(struct Task *task, ULONG defprotection);
  66. extern APTR __asm __saveds NEWAddTask(register __a1 struct Task *task, register __a2 APTR initpc,
  67.                                                   register __a3 APTR finalpc,
  68.                                                   register __a6 struct ExecBase *sysbase);
  69. extern void __asm __saveds NEWRemTask(register __a1 struct Task *task,
  70.                                                   register __a6 struct ExecBase *sysbase);
  71. extern ULONG __asm __saveds muGetTaskOwner(register __d0 struct Task *task);
  72. extern struct muExtOwner __asm __saveds *muGetTaskExtOwner(register __d0 struct Task *task);
  73. extern void __asm __saveds muFreeExtOwner(register __a0 struct muExtOwner *owner);
  74. extern BOOL __asm __saveds muKill(register __d0 struct Task *task);
  75. extern BOOL __asm __saveds muFreeze(register __d0 struct Task *task);
  76. extern BOOL __asm __saveds muUnfreeze(register __d0 struct Task *task);
  77.